/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package folders2;

import DlinkedList.MyDList;

/**
 *
 * @author Administrator
 */
public interface UserFolder2Interface {

    /**
     * This method is used to create new custom folders in user directory beside user folder
     * @param folderName name of new folder
     */
    void createCustomFolder(String folderName);

    /**
     * This method is used to delete custom folder
     * @param folderName folder name
     */
    void deleteCustomFolder(String folderName);

    /**
     * This method is used to get contact file
     * @return contact file(or reference to it)
     */
    ProjectFile getContactsFile();

    /**
     * This method is used to get doubly linked list
     * which contains references to all custome folders
     * @return doubly linked list of all custom folders
     */
    MyDList getCustomFolders();

    /**
     * This method is used to get reference to draft folder
     * @return reference to draft folder
     */
    ProjectFile getDraft();

    /**
     * This method is used to get Filter file
     * @return filter file(or reference to it)
     */
    ProjectFile getFilter();

    /**
     * This method is used to get reference of inbox folder
     * @return  reference of inbox folder
     */
    ProjectFile getInbox();

    /**
     * This method is used to get reference of user folder
     * which contains all other folders
     * @return  reference of userfolder folder
     */
    ProjectFile getMyDir();

    /**
     * This method is used to get reference of sent folder
     * @return reference of user folder
     */
    ProjectFile getSent();

    /**
     * This method is used to get reference of spam folder
     * @param reference of spam folder
     */
    ProjectFile getSpam();

    /**
     * This method is used to get reference of trash folder
     * @return reference of spam folder
     */
    ProjectFile getTrash();

    /**
     * This method is used to get userName
     * @return userName
     */
    String getUserName();

    /**
     * This method is used to set contact file (give new reference to it)
     * @param contactsFile new contact file
     */
    void setContactsFile(ProjectFile contactsFile);

    /**
     * This method is used to set customs folders
     * @param customFolders new list of custom folders
     */
    void setCustomFolders(MyDList customFolders);

    /**
     * This method is used to set reference to draft folder
     * @param draft  new reference to draft folder
     */
    void setDraft(ProjectFile draft);

    /**
     * This method is used to set filter file ( give new reference to it)
     * @param filter new filter file(or new reference to filter file)
     */
    void setFilter(ProjectFile filter);

    /**
     * This method is used to set reference of inbox folder
     * @param inbox new reference of inbox folder
     */
    void setInbox(ProjectFile inbox);

    /**
     * This method is used to set reference of user folder
     * @param myDir new reference of user folder
     */
    void setMyDir(ProjectFile myDir);

    /**
     * This method is used to set reference of sent folder
     * @param sent new reference of sent folder
     */
    void setSent(ProjectFile sent);

    /**
     * This method is used to set new reference of spam folder
     * @param spam new reference of spam folder
     */
    void setSpam(ProjectFile spam);

    /**
     * This method is used to set reference of trash folder
     * @param trash new reference of trash folder
     */
    void setTrash(ProjectFile trash);

    /**
     * This method is used to set userName
     * @param userName new userName
     */
    void setUserName(String userName);

}
